home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 1 / Gold Medal Software Volume 1 (Gold Medal) (1994).iso / prog / tpwprog6.arj / USTR1.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-07-02  |  3.2 KB  |  119 lines

  1. { ustr1.pas -- StrMain subunit #1 }
  2.  
  3. unit UStr1;
  4.  
  5. interface
  6.  
  7. {$R ustr1.res}
  8.  
  9. uses WinTypes, WinProcs, WObjects;
  10.  
  11. const
  12.  
  13.   id_Menu = 100;    { Menu resource ID }
  14.   cm_Advanced = 101;
  15.   cm_Quit = 102;
  16.   cm_Item1 = 201;
  17.   cm_Item2 = 202;
  18.   cm_Item3 = 203;
  19.  
  20. type
  21.  
  22.   PStrMainWindow = ^StrMainWindow;
  23.   StrMainWindow = object(TWindow)
  24.     AdvancedMenusEnabled: Boolean;
  25.     constructor Init(AParent: PWindowsObject; ATitle: PChar);
  26.     procedure CMAdvanced(var Msg: TMessage);
  27.       virtual cm_First + cm_Advanced;
  28.     procedure CMQuit(var Msg: TMessage);
  29.       virtual cm_First + cm_Quit;
  30.     procedure CMItem1(var Msg: TMessage);
  31.       virtual cm_First + cm_Item1;
  32.     procedure CMItem2(var Msg: TMessage);
  33.       virtual cm_First + cm_Item2;
  34.     procedure CMItem3(var Msg: TMessage);
  35.       virtual cm_First + cm_Item3;
  36.   end;
  37.  
  38. implementation
  39.  
  40. uses UStr2;
  41.  
  42. const
  43.  
  44.   maxMenuStrLen = 25;    { Maximum length of a menu string }
  45.   newMenuID  = 0;        { New top-level menu string table ID }
  46.   newItem1ID = 1;        { First new menu item's string table ID }
  47.   newItem2ID = 2;        { Second new menu item's string table ID }
  48.   newItem3ID = 3;        { Third new menu item's string table ID }
  49.  
  50.  
  51. { StrMainWindow }
  52.  
  53. {- Construct StrMainWindow object }
  54. constructor StrMainWindow.Init(AParent: PWindowsObject; ATitle: PChar);
  55. begin
  56.   TWindow.Init(AParent, ATitle);
  57.   Attr.Menu := LoadMenu(HInstance, PChar(id_Menu));
  58.   AdvancedMenusEnabled := false
  59. end;
  60.  
  61. {- Activate advanced menus }
  62. procedure StrMainWindow.CMAdvanced(var Msg: TMessage);
  63. var
  64.   Mh: HMenu;  { Menu handle }
  65.   NewMenuStr, NewItem1Str, NewItem2Str, NewItem3Str:
  66.     array[0 .. maxMenuStrLen] of Char;
  67. begin
  68.   if AdvancedMenusEnabled then Exit;
  69.   Mh := CreatePopupMenu;
  70.   if Mh <> 0 then
  71.   begin
  72.   {- Disable Menu:Advanced command }
  73.     EnableMenuItem(Attr.Menu, cm_Advanced, mf_ByCommand or mf_Grayed);
  74.   {- Load strings from resource }
  75.     LoadString(HInstance, newMenuID, NewMenuStr, maxMenuStrLen);
  76.     LoadString(HInstance, newItem1ID, NewItem1Str, maxMenuStrLen);
  77.     LoadString(HInstance, newItem2ID, NewItem2Str, maxMenuStrLen);
  78.     LoadString(HInstance, newItem3ID, NewItem3Str, maxMenuStrLen);
  79.   {- Create new menu from strings }
  80.     AppendMenu(Attr.Menu, mf_Popup, Mh, NewMenuStr);
  81.     AppendMenu(Mh, mf_String or mf_Enabled, cm_Item1, NewItem1Str);
  82.     AppendMenu(Mh, mf_String or mf_Enabled, cm_Item2, NewItem2Str);
  83.     AppendMenu(Mh, mf_String or mf_Enabled, cm_Item3, NewItem3Str);
  84.     DrawMenuBar(HWindow);
  85.     AdvancedMenusEnabled := true
  86.   end
  87. end;
  88.  
  89. {- Exit program }
  90. procedure StrMainWindow.CMQuit(var Msg: TMessage);
  91. begin
  92.   CloseWindow
  93. end;
  94.  
  95. {- New item commands 1, 2, and 3 }
  96.  
  97. procedure StrMainWindow.CMItem1(var Msg: TMessage);
  98. begin
  99.   ShowMessage(HWindow, 0)
  100. end;
  101.  
  102. procedure StrMainWindow.CMItem2(var Msg: TMessage);
  103. begin
  104.   ShowMessage(HWindow, 1)
  105. end;
  106.  
  107. procedure StrMainWindow.CMItem3(var Msg: TMessage);
  108. begin
  109.   ShowMessage(HWindow, 2)
  110. end;
  111.  
  112. end.
  113.  
  114.  
  115. {--------------------------------------------------------------
  116.   Copyright (c) 1991 by Tom Swan. All rights reserved.
  117.   Revision 1.00    Date: 4/16/1991
  118. ---------------------------------------------------------------}
  119.